home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2008 September
/
PCWorld_2008-09_cd.bin
/
v cisle
/
sadanastroju
/
interclue-1.5.6-fx.xpi
/
chrome
/
interclue
/
content
/
common.js
next >
Wrap
Text File
|
2008-06-03
|
2KB
|
76 lines
function $(id){
return document.getElementById(id);
}
this.interclue = this.interclue || {};
/**
* get a handle to the most resent browser window
*/
interclue.getBrowser = function(){
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
return wm.getMostRecentWindow("navigator:browser");
}
/**
* return Klib if is exists and is ready
*/
interclue.getKlib = function(){
var iframe = $('interclue-iframe')
//if this is a dialog, then use the latest browser window
if (!iframe){
var browser = interclue.getBrowser();
iframe = browser.document.getElementById('interclue-iframe');
}
if (iframe && iframe.contentWindow && iframe.contentWindow.Klib && iframe.contentWindow.Klib.initalized){
return iframe.contentWindow.Klib;
}
else {
return null;
}
}
/**
* extracts key/value pairs from a string
*/
interclue.extractKeyValuePairs = function(str, separator, convertDatatypes){
separator = separator || '&';
var regex = new RegExp("\\s*"+ Klib.escapeRegExStr(separator) +"\\s*", "ig");
var pairs = {};
var sections = str.split(regex);
for (var i=0; i<sections.length; i++){
var keyValue = sections[i].split(/=/);
var key = keyValue[0];
var value = keyValue[1];
if (convertDatatypes){
if (value.match(/^\d+\.\d+$/)){
value = parseFloat(value);
}
else if (value.match(/^\d+$/)){
value = parseInt(value);
}
else if (value.match(/^true$/i)){
value = true;
}
else if (value.match(/^false$/i)){
value = false;
}
}
if (key.substr(-2) == "[]"){
//value is supposed to be an array of values.
key = key.substr(0, key.length -2);
pairs[key] = pairs[key] || [];
pairs[key].push(value);
}
else {
pairs[key] = value;
}
}
return pairs;
}